home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / misc1 / iv26_w30.zip / SOURCES / WSENSOR.C < prev    next >
C/C++ Source or Header  |  1992-03-25  |  2KB  |  85 lines

  1. /*
  2.  * MS-dependent sensor code
  3.  */
  4.  
  5. #include <InterViews\itable.h>
  6. #include <InterViews\sensor.h>
  7. #include <InterViews\X11\eventrep.h>
  8. #include <InterViews\X11\worldrep.h>
  9.  
  10. static Sensor*  grabber;
  11.  
  12. boolean Sensor::Interesting(Event& m) {
  13.     MSG msg = m.rep->Message();
  14.  
  15.     switch (msg.message) {
  16.  
  17.     case WM_MOUSEMOVE:
  18.            if (mask & motionmask) {
  19.                m.GetMotionInfo();
  20.                return  true;
  21.            };
  22.            break;
  23.  
  24.     case WM_CHAR:
  25.            if (mask & keymask) {
  26.                m.GetKeyInfo();
  27.                return ButtonIsSet(down, m.button);
  28.            };
  29.            break;
  30.  
  31.     case WM_LBUTTONDOWN:
  32.     case WM_MBUTTONDOWN:
  33.     case WM_RBUTTONDOWN:
  34.             if (mask & downmask) {
  35.             m.GetButtonInfo(DownEvent);
  36.             boolean b = ButtonIsSet(down, m.button);
  37.             if (b && ButtonIsSet(up, m.button))
  38.                 grabber = this;
  39.             else
  40.                 grabber = nil;
  41.             return b;
  42.             };
  43.             break;
  44.  
  45.     case WM_LBUTTONUP:
  46.     case WM_MBUTTONUP:
  47.     case WM_RBUTTONUP:
  48.            if (mask & upmask) {
  49.            m.GetButtonInfo(UpEvent);
  50.            return (ButtonIsSet(up, m.button) || (grabber != nil));
  51.            };
  52.            break;
  53.  
  54.     case WM_SETFOCUS:
  55.            if (mask & focusmask) {
  56.            m.eventType = FocusInEvent;
  57.            return true;
  58.            };
  59.            break;
  60.  
  61.     case WM_KILLFOCUS:
  62.            if (mask & focusmask) {
  63.            m.eventType = FocusOutEvent;
  64.            return true;
  65.            };
  66.            break;
  67.  
  68.     case WM_ENTERWINDOW:
  69.            if (mask & entermask) {
  70.            return m.GetCrossingInfo(EnterEvent);
  71.            }
  72.            break;
  73.  
  74.     case WM_LEAVEWINDOW:
  75.            if (mask & leavemask) {
  76.            return m.GetCrossingInfo(LeaveEvent);
  77.            }
  78.            break;
  79.     default:
  80.            /* ignore */;
  81.     }
  82.     return false;
  83. }
  84.  
  85.